#include <stdio.h>
#include <stdlib.h>

#include "hash.h"
#include "paciente.h"
#include "heap.h"

int main(int argc, char** argv)
{
	int colisao = 0;
	int col[9]; /* 8 é o número máximo de colisões */
	int i;
	FILE* fHash = fopen("Fernanda_e_Luiza_hash.txt", "w");
	Paciente** testePaciente = NULL;

	if (argc != 2) {
                printf("Bad arguments, no doughnut for you\n");
                exit(1);
	}
	
	if (!fHash) {
                printf("Erro ao abrir o arquivo para leitura.\n");
                exit(1);
        }

	testePaciente = leArquivo(argv[1], fHash);
	
	for (i=0; i<9; i++) {
		col[i] = 0;
	}
		
	/* Calculo da colisão total. */
	fprintf(fHash, "1. Analise da funcao de hash\n\n");

	for (i=0; i<65000; i++) {
		if (testePaciente[i] == NULL)
			continue;
		
		colisao += testePaciente[i]->colisao;
	}
	
	fprintf(fHash, "Numero total de colisoes: %d\n", colisao);
	
	/* Número de entradas na tabela com dispersão 0, 1, ..., 8 */
	for (i=0; i<65000; i++) {
		if (testePaciente[i] != NULL) {
			if (testePaciente[i]->colisao == 0) 		col[0]++;
			else if (testePaciente[i]->colisao == 1) 	col[1]++;
			else if (testePaciente[i]->colisao == 2) 	col[2]++;
			else if (testePaciente[i]->colisao == 3) 	col[3]++;
			else if (testePaciente[i]->colisao == 4) 	col[4]++;
			else if (testePaciente[i]->colisao == 5) 	col[5]++;
			else if (testePaciente[i]->colisao == 6) 	col[6]++;
			else if (testePaciente[i]->colisao == 7) 	col[7]++;
			else 						col[8]++;
		}
	}	

	for (i=0; i<9; i++) {
		fprintf(fHash, "%d colisao: %d\n", i, col[i]);
	}
	fprintf(fHash, "\n");

        fclose(fHash);
	
	return 0;
}
